2.4 Štruktúrovaný program
Ľubovolný algoritmus sa dá zostaviť z nasledujúcich prvkov:
- Sekvencie: Postupnosť za sebou idúcich vykonávateľných príkazov (činností).
- Selekcia: Výber z daných činností.
- Iterácia: Opakované vykonávanie daných činností. Telo cyklu nevykonáme ani raz, vykonáme raz alebo veľakrát podľa podmienky cyklu.
- Bezpodmienečný skok: Odovzdanie riadenia druhému danému bodu programu.
Vlastne iterácie ani nie sú nutné. Dokážeme ich vytvoriť pomocou podmienok a bezpodmienečných skokov. (Ak podmienka nie je splnená, skok späť na určitý bod.)
Veta Böhma a Jacopiniho
Pomocou prvých troch prvkov (sekvencia, selekcia a iterácia) sa dá vytvoriť každý taký algoritmus, ktorý má jeden vstupný a jeden výstupný bod.
Štruktúrovaný program
Program pozostávajúci iba z sekvencií, selekcií a iterácií sa nazýva štruktúrovaným. V štruktúrovanom programovaní pojem bezpodmienečného skoku je neznámy (nesmieme ho použiť), a teda zo žiadneho cyklu nemôžeme vyskočiť. Z toho vyplýva, že každá sekvencia programu - a teda aj celý program - má jediný vstupný a jediný výstupný bod. Takýto program je podstatne prehľadnejší. Metodiku štruktúrovaného programovania rozpracoval E. W. Dijkstra.
Zložitejší algoritmus sa nedá "v hlave" naplánovať, vytvoriť. K tomu potrebujeme vhodné prostriedky. Ak svoje myšlienky zapíšeme vlastným spôsobom, iný ich nemusia pochopiť. Potrebujeme také prostriedky, ktoré sú známe vo väčšom okruhu, sú uznávané a ktoré používajú aj iní. V ďalšom sa oboznámime s niekoľkými prostriedkami zápisu algoritmov.
2.5 Vývojový diagram
Pomocou vývojového diagramu (flowchart) dokážeme zobraziť do detailov dynamiku programu. Spôsob označenia dáva voľnú ruku na zobrazenie ľubovolného deja, teda aj neštruktúrované algoritmy sa dajú ľahko pomocou neho nakresliť. Samozrejme voľná ruka nie vždy znamená výhodu. Vieme, že veľká sloboda ľahko prejde do chaosu. Uvedieme základné prvky vývojových diagramov. T označuje nejakú činnosť a F - podmienku. Postupnosť vykonávania príkazov vyznačujeme šípkami.
Základné prvky vývojových diagramov:
Blok elementárnej činnosti: | Rozhodovací blok: |
 |  |
Činnosť označujeme obdĺžnikom, do ktorého vpíšeme názov činnosti (jeho identifikátor). Prechádzajúc cez blok elementárnej činnosti, táto sa vykoná. | Ak podmienka je pravdivá potom pokračujeme vetvou Pravda v opačnom prípade - vetvou Nepravda. |
|
Bod spájania sa: | Podprogram: |
 |  |
Počas vykonávania algoritmu šípky sa môžu stretávať. Nezávisle od toho, čo sa udialo pred bodom spájania, ďalej sa algoritmus vykonáva rovnako v smere šípky. Prechod cez bod spájania je vždy jednoznačný. Ten malý krúžok môžeme vynechať. | Podprogram nie je elementárnou činnosťou. Táto činnosť musí byť niekde uvedená napr. na zvláštnom vývojovom diagrame. |
|
Začiatok programu: | Koniec programu: |
 |  |
|
Vstup údajov: | Výpis údajov: |
 |  |
|
Prírastkový cyklus: | Bod spojenia: |
 |  |
Prírastkový cyklus sa dá vytvoriť pomocou predchádzajúcich troch prvkov. Toto označenie je iba zjednodušenie označenia. | Body spojenia používame vtedy, keď z nedostatku priestoru algoritmus kreslíme na ďalší papier resp. papiere. |
|
Teraz si ukážeme ako môžeme zostrojiť rôzne štruktúry pomocou vývojového diagramu. |
|
Sekvenciu tvorí postupnosť elementárnych činností pospájané šípkami. |
 | |
|
Jednovetvovú a dvojvetvovú selekciu kreslíme pomocou rozhodovacích blokov: |
 |  |
|
Viacvetvovú selekciu (keď chceme vyberať z viacerých činností) môžeme realizovať pomocou do seba vložených dvojvetvových selekcií. |
Podstatou iterácie je, že podľa istej podmienky časť činností (telo iterácie) sa opakovane vykonávajú. V podstate poznáme dva druhy iterácií - jeden testuje pred telom cyklu a druhý až po (v tomto prípade telo cyklu sa raz vždy vykoná). |
|
Vpredu testovaný cyklus: | Vzadu testovaný cyklus: |
 |  |
Cykly zvyknú deliť aj podľa toho, či sa zadáva podmienka vstupu alebo výstupu (podmienka sa dá obrátiť, v tomto prípade sa vetvy pravda a nepravda sa vymenia miestami). Pomocou vpredu testovaného cyklu (s podmienkou vstupu) sa dá každá úloha vyriešiť - ostatné cykly sú vlastne "variáciami na jednu tému".
Prírastkový cyklus znamená, že príkazy tela cyklu sa budú opakovať na vopred známy počet krát. Opakovanie sa vykonáva a riadi pomocou tzv. parametru cyklu od jednej hodnoty po druhu hodnotu. Na zobrazenie prírastkového cyklu už máme hotový grafický prvok.
Teraz si ukážeme ako bude vyzerať algoritmus našej úlohy pomocou vývojového diagramu:
Vyhľadávanie je zložitejšia činnosť, ktorú by sme mali zobraziť na inom obrázku, ale my to teraz robiť nebudeme.
|